import { manageList, manageCount } from "../../request/api.js";

const state = {
    //列表数据
    list: [],
    //总条数
    total: 0,
    //每页的条数
    size: 2,
    //当前页码数
    page: 1
}

const mutations = {
    changeList(state, arr) {
        state.list = arr
    },
    changeTotal(state, num) {
        state.total = num
    },
    changePage(state, num) {
        state.page = num
    }
}

const actions = {
    //请求列表数据
    reqChangeList(context) {
        manageList({ size: context.state.size, page: context.state.page }).then(res => {
            let list = res.data.list ? res.data.list : []
            // bug：假设一共有两页数据，删除两次之后，分页器已经变成了第一页，但是状态层的当前页码数还是第二页，所以请求的还是第二页的数据。
            // 逻辑：判断list是否有长度，如果有长度说明没问题，如果没有长度说明可能有问题。
            // 问题：请求的还是那个错误的当前页码数据，我们就要把当前页码减一之后再次请求
            if(list.length==0 && context.state.page>1){
                context.commit("changePage",context.state.page-1)
                context.dispatch("reqChangeList")
            }
            context.commit("changeList",list)
        })
    },
    //请求列表总条数
    reqChangeTotal(context){
        manageCount().then(res=>{
            context.commit("changeTotal",res.data.list[0].total)
        })
    },
    //修改当前页码数
    reqChangePage(context,num){
        //修改状态层的当前页码数
        context.commit("changePage",num)
        //重新请求列表数据
        context.dispatch("reqChangeList")
    }
}

const getters = {
    list(state){
        return state.list
    },
    total(state){
        return state.total
    },
    size(state){
        return state.size
    }
}

export default{
    state,
    mutations,
    actions,
    getters,
    namespaced: true
}